home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / MspImagePlugin.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  73 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. __version__ = '0.1'
  5. import Image
  6. import ImageFile
  7.  
  8. def i16(c):
  9.     return ord(c[0]) + (ord(c[1]) << 8)
  10.  
  11.  
  12. def _accept(prefix):
  13.     return prefix[:4] in ('DanM', 'LinS')
  14.  
  15.  
  16. class MspImageFile(ImageFile.ImageFile):
  17.     format = 'MSP'
  18.     format_description = 'Windows Paint'
  19.     
  20.     def _open(self):
  21.         s = self.fp.read(32)
  22.         if s[:4] not in ('DanM', 'LinS'):
  23.             raise SyntaxError, 'not an MSP file'
  24.         
  25.         sum = 0
  26.         for i in range(0, 32, 2):
  27.             sum = sum ^ i16(s[i:i + 2])
  28.         
  29.         if sum != 0:
  30.             raise SyntaxError, 'bad MSP checksum'
  31.         
  32.         self.mode = '1'
  33.         self.size = (i16(s[4:]), i16(s[6:]))
  34.         if s[:4] == 'DanM':
  35.             self.tile = [
  36.                 ('raw', (0, 0) + self.size, 32, ('1', 0, 1))]
  37.         else:
  38.             self.tile = [
  39.                 ('msp', (0, 0) + self.size, 32 + 2 * self.size[1], None)]
  40.  
  41.  
  42.  
  43. def o16(i):
  44.     return chr(i & 255) + chr(i >> 8 & 255)
  45.  
  46.  
  47. def _save(im, fp, filename):
  48.     if im.mode != '1':
  49.         raise IOError, 'cannot write mode %s as MSP' % im.mode
  50.     
  51.     header = [
  52.         0] * 16
  53.     header[0] = i16('Da')
  54.     header[1] = i16('nM')
  55.     (header[2], header[3]) = im.size
  56.     (header[4], header[5]) = (1, 1)
  57.     (header[6], header[7]) = (1, 1)
  58.     (header[8], header[9]) = im.size
  59.     sum = 0
  60.     for h in header:
  61.         sum = sum ^ h
  62.     
  63.     header[12] = sum
  64.     for h in header:
  65.         fp.write(o16(h))
  66.     
  67.     ImageFile._save(im, fp, [
  68.         ('raw', (0, 0) + im.size, 32, ('1', 0, 1))])
  69.  
  70. Image.register_open('MSP', MspImageFile, _accept)
  71. Image.register_save('MSP', _save)
  72. Image.register_extension('MSP', '.msp')
  73.